导出了一堆节点坐标,这些节点位于一个圆柱壳体上,如何根据这些节点坐标反推出圆柱的圆心坐标和半径?
只考虑节点的坐标,假设真实圆心的坐标为,半径为,则圆的方程为:
根据最小二乘法拟合,目标函数为:
分别对求导,令倒数为0,有:
展开:
即可通过求解线性方程组,求得.
x
1function [xc,yc,R]=Fitcircle2(x,y)
2% x^2+y^2+a*x+b*y+c=0
3
4n=length(x);
5xx=x.*x;
6yy=y.*y;
7xy=x.*y;
8
9A=[sum(x) sum(y) n;sum(xy) sum(yy) sum(y);sum(xx) sum(xy) sum(x)];
10B=[-sum(xx+yy);-sum(xx.*y+yy.*y);-sum(xx.*x+xy.*y)];
11a=A\B;
12xc = -0.5*a(1);
13yc = -0.5*a(2);
14R = sqrt(-(a(3)-xc^2-yc^2));
15end